#ifndef _MyCsIBirksLaw_H_
#define _MyCsIBirksLaw_H_

//#define _MyCsIBirksLaw_DBG_

#include "G4Step.hh"
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
#include "TGraph.h"
#pragma GCC diagnostic pop
#include <fstream>
#include <map>
#include <string>

class MyCsIBirksLaw
{
public:
    MyCsIBirksLaw();
    MyCsIBirksLaw(G4int verbose_);
    ~MyCsIBirksLaw();

    inline void SetE0(double E0) {m_E0 = E0;}
    inline void SetkB(double kB) {m_kB = kB;}

    double QF(const G4Step& aStep);

private:
    bool m_IfNeutrino;
    double m_E0;
    double m_kB;
    double m_rho;
    G4int m_verboseLevel;
    std::map<std::string, TGraph*> m_dEdxMap;
    #ifdef _MyCsIBirksLaw_DBG_
        std::fstream m_outputFile;
    #endif

};

#endif